The data networks collectively forming the Internet are becoming or already are the primary means for communication, commerce, as well as accessing news, music, videos, applications, games, and other content. However at times, access to such content is delayed as a result of over-loaded links, downed links, limited bandwidth, congestion, or other lack of resources in the intervening links between a source providing the content and a destination requesting and receiving the content.
Contributing to this slowdown are increasing numbers of users having numerous network enabled devices (e.g., desktops, laptops, tablets, smartphones, etc.), each of which are provided ever faster interfaces with which to consume content. Also contributing to the slowdown are increasing amounts of new and/or feature-rich content that requires greater bandwidth for delivery. In other words, there is both an increase in the demand for content as well as an increase in supply of consumable content.
To counteract this slowdown, network operators have deployed data networks having greater bandwidth as well as more powerful and/or efficient networking resources. This is nowhere more evident than in the rapid evolution of cellular data networks. Within a relatively short time frame, these data networks have evolved from 2G (e.g., General Packet Radio Service (GPRS) and Enhanced Data Rates for GSM Evolution (EDGE)), to 3G (e.g., High Speed Packet Access (HSPA)), to the current 4G (e.g., Long Term Evolution (LTE)) data networks. Still, there is a need to more efficiently deliver the content as the supply and demand for content outpaces network evolution and the exorbitant costs of continual network evolution have slowed down the network evolution relative to the growth of the supply and demand for content. To that end, content delivery networks (CDNs) have been deployed throughout the Internet infrastructure.
A CDN accelerates the delivery of content by reducing the distance that content travels in order to reach a destination. The CDN strategically locates surrogate origin servers, also referred to as caching servers or edge servers, at various points-of-presence (PoPs) that are geographically proximate to large numbers of content consumers. The CDN then utilizes a traffic management system to route requests for content hosted by the CDN to the edge server that can optimally deliver the requested content to the content consumer. As used hereafter optimal delivery of content refers to the most efficient available means with which content can be delivered from a server to an end user machine over a data network. Optimal delivery of content can be quantified in terms of latency, jitter, packet loss, distance, and overall end user experience.
Determination of the optimal edge server may be based on geographic proximity to the content consumer as well as other factors such as load, capacity, and responsiveness of the edge servers. The optimal edge server delivers the requested content to the content consumer in a manner that is more efficient than when origin servers of the content provider deliver the requested content. For example, a CDN may locate edge servers in Los Angeles, Dallas, and New York. These edge servers may cache content that is published by a particular content provider with an origin server in Miami. When a content consumer in San Francisco submits a request for the published content, the CDN will deliver the content from the Los Angeles edge server on behalf of the content provider as opposed to the much greater distance that would be required when delivering the content from the origin server in Miami. In this manner, the CDN reduces the latency, jitter, and amount of buffering that is experienced by the content consumer.
The edge server can further improve on the end user experience by adaptively adjusting the content that is being delivered to the end user. This may include reducing the bitrate of a media stream (e.g., video) being delivered to an end user when the path to the end user is congested or the performance of the path is otherwise degraded. In so doing, a lower quality stream is delivered to the end user. The lower quality stream ensures that the end user enjoys an uninterrupted experience (by avoiding dropped frames, repeated buffering, etc.). The bitrate can be increased in order to deliver a higher quality stream to the end user when the path from the edge server to end user becomes less congested. Similar adaptive techniques are applicable to other forms of content besides media content (e.g., music and video). For instance, the edge server can further improve the end user experience by adaptively scaling images. Here again, when the path to the end user is congested or otherwise limited, the edge server can improve the end user experience by passing a lower resolution copy or more compressed version of a requested image to the end user, thereby enabling the end user to receive the image quicker than if a higher resolution copy or less compressed version of the requested image were to be passed. Further still, the edge server can improve the end user experience using server-side bandwidth throttling, whereby the server throttles or slows the rate at which it sends content beyond ordinary flow control mechanisms in the protocol stack or in the data network.
To facilitate any form of adaptive content delivery or server-side bandwidth throttling, the CDN edge server needs to be aware of the performance of the underlying data network that links the edge server to the various end users. CDNs either utilize existing network performance monitoring tools or have developed their own systems and methods in order to monitor network performance.
One such network performance monitoring tool is the Keynote system. The Keynote system involves deployment of various agents across the Internet. The agents emulate end users and periodically request (e.g., every ten minutes) and download content from one or more of the CDN edge servers. The Keynote system agents then measure various metrics related to the delivery of that content. However, such systems do not provide accurate performance measurements because the agents do not request and download content from the same network locations as the actual end users. As a result, the performance measurements obtained from the Keynote system do not accurately reflect the network performance that end users experience. More specifically, the Keynote system is unable to measure performance along all network links connecting the end users to the CDN edge servers. Also, such a system does not provide real-time measurements. For instance, the network measurements can be up to 9 minutes and 59 seconds stale when measurements are taken every 10 minutes. Lastly, the system injects additional traffic into the network. This additional traffic is manifested in the form of the requests that are issued by the agents to the edge servers and the responses that the edge servers issue in turn to the system agents. This additional traffic adds to the traffic that is actually requested by and delivered to various end users. The result is increased network congestion and increased load on the edge servers which now have to respond to the monitoring agents in addition to the requests that are submitted by various end users. In other words, specialized packets are injected in the network for the sole purpose of performance monitoring.
One method to improve upon the accuracy of the Keynote system is to take measurements directly from the end users that request content from the CDN. This also involves injecting additional traffic into the network. For example, pinging an end user by sending one or more Internet Control Message Protocol (ICMP) packets to determine a round-trip time to the end user. Such techniques, while accurate in the resulting measurements, add overhead at the server performing the measurements as well as additional traffic load on the data network. While a single ICMP packet is insignificant in consuming server resources and slowing down a network, thousands of such packets continually being sent out from multiple monitoring points (e.g., edge servers) can result in a measurable amount of performance degradation. Moreover, these measurements suffer from staleness as they are often conducted on a periodic basis. Such measurements can be taken in real-time. For example, before responding to a user request for content, pinging the end user. However, this introduces unnecessary delay when actually responding to the end user.
Still some CDNs and network performance monitoring tools have resorted to using so called “client-side” techniques. These techniques usually involve end users performing measurements for the benefit of the CDN or monitoring tool. The CDN may inject a script or set of instructions in the content that is delivered to the end users. The script or set of instructions cause the end users to measure the performance relating to the receipt of content from the CDN whether that content is the content requested by the end users or some token object. The script or set of instructions then cause the end users to report those measurements to the CDN or the monitoring tool. Such techniques may be performed covertly without the end users' knowledge, thereby surfacing issues related to privacy and trust. When end users are made aware of such techniques, most disapprove or disallow execution on their devices as they do not want any unnecessary software from running on their devices, especially when such software is executed for the benefit of some third party.
Accordingly, there is a need for improved systems and methods with which to monitor network performance. There is a need to conduct such monitoring based on existing traffic flows without the introduction of additional traffic, wherein such additional traffic is for the purpose of facilitating network performance monitoring. There is a need to perform such monitoring in real-time without sacrificing accuracy in measuring performance to the end user. Moreover, such monitoring should be based on “server-side” techniques that allow such monitoring to occur without active involvement of the end user. There is also a need to leverage the results from such monitoring in order to further optimize content delivery as provided by a content delivery network.